home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / CONTAINER / SortedOList.C < prev    next >
C/C++ Source or Header  |  1992-06-09  |  2KB  |  86 lines

  1. #ifdef __GNUG__
  2. #pragma implementation
  3. #endif
  4.  
  5. #include "SortedOList.h"
  6. #include "Class.h"
  7.  
  8. //---- SortedObjList -----------------------------------------------------------
  9.  
  10. NewMetaImpl0(SortedObjList,ObjList);
  11.  
  12. SortedObjList::SortedObjList(bool order)
  13.     if ( order == cSortAscending )
  14.     SetFlag(SObListAscending);
  15. }
  16.  
  17. Object *SortedObjList::Add(Object *op)
  18. {
  19.     register ObjLink *ll;
  20.     register int comp;
  21.     
  22.     if ( IsArgNull("Add", op) )
  23.     return 0;
  24.  
  25.     ll= anchor->Next();
  26.     while ( ll != anchor ) {
  27.     comp= CompareObjects(op, ll->Op());
  28.     if ( (Ascending() && comp < 0) || (! Ascending() && comp > 0) ) {
  29.         InsertLink(op, ll);
  30.         return 0;
  31.     }
  32.     ll= ll->Next();
  33.     }    
  34.     ObjList::Add(op); 
  35.     return 0;
  36. }
  37.  
  38. Object *SortedObjList::AddFirst(Object *op)
  39. {
  40.     MayNotUse("AddFirst");
  41.     return Add(op);
  42. }
  43.  
  44. Object *SortedObjList::AddLast(Object *op)
  45. {
  46.     MayNotUse("AddLast");
  47.     return Add(op);
  48. }
  49.  
  50. Object *SortedObjList::AddBefore(Object *op, Object *)
  51. {
  52.     MayNotUse("AddBefore");
  53.     return Add(op);
  54. }
  55.  
  56. Object *SortedObjList::AddAfter(Object *op, Object *)
  57. {
  58.     MayNotUse("AddAfter");
  59.     return Add(op);
  60. }
  61.  
  62. Object *SortedObjList::AddBeforePtr(Object *op, Object *)
  63. {
  64.     MayNotUse("AddBeforePtr");
  65.     return Add(op);
  66. }
  67.  
  68. Object *SortedObjList::AddAfterPtr(Object *op, Object *)
  69. {
  70.     MayNotUse("AddAfterPtr");
  71.     return Add(op);
  72. }
  73.  
  74. Object *SortedObjList::PutAt(Object *op, int)
  75. {
  76.     MayNotUse("PutAt");
  77.     return Add(op);
  78. }
  79.  
  80. int SortedObjList::CompareObjects(Object *op1, Object *op2)
  81. {
  82.     return op1->Compare(op2);
  83. }
  84.  
  85.